TBVGPE - TEXT BASED VIDEO GAME PHYSICS ENGINE - README.md

Copyright (C) 2016 Don Dirks (XYFS) <https://notabug.org/XYFS/>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program.  If not, see <https://www.gnu.org/licenses/>.

-----




# TBVGPE

TEXT BASED VIDEO GAME PHYSICS ENGINE




## DEFINITIONS

**Artificial Intelligence (AI)**

> Artificial intelligence is intelligence exhibited by machines. In computer science, an ideal "intelligent" machine is a flexible rational agent that perceives its environment and takes actions that maximize its chance of success at some goal. Colloquially, the term "artificial intelligence" is applied when a machine mimics "cognitive" functions that humans associate with other human minds, such as "learning" and "problem solving". As machines become increasingly capable, mental facilities once thought to require intelligence are removed from the definition. For example, optical character recognition is no longer perceived as an exemplar of "artificial intelligence", having become a routine technology. Capabilities currently classified as artificial intelligence include successfully understanding human speech, competing at a high level in strategic game systems (such as Chess and Go), self-driving cars, and interpreting complex data.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Artificial_intelligence)




**Application Programming Interface (API)**

> An application programming interface is a set of subroutine definitions, protocols, and tools for building application software. A good application programming interface makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer. An application programming interface may be for a web-based system, operating system, database system, computer hardware, or software library. An application programming interface specification can take many forms, but often includes specifications for routines, data structures, object classes, variables, or remote calls. Documentation for the application programming interface is usually provided to facilitate usage.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Application_programming_interface)




**Board game**

> A board game is a tabletop game that involves counters or pieces moved or placed on a pre-marked surface or "board", according to a set of rules. Some games are based on pure strategy, but many contain an element of chance; and some are purely chance, with no element of skill.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Board_game)




**Card game**

> A card game is any game using playing cards as the primary device with which the game is played, be they traditional or game-specific. Countless card games exist, including families of related games (such as poker). A small number of card games played with traditional decks have formally standardized rules, but most are folk games whose rules vary by region, culture, and person.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Card_game)




**Class**

> In object-oriented programming, a class is an extensible program-code-template for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods).

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Class_(computer_programming))




**Communications protocol**

> A communications protocol is a system of rules that allow two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. These are the rules or standard that defines the syntax, semantics and synchronization of communication and possible error recovery methods. Protocols may be implemented by hardware, software, or a combination of both.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Communications_protocol)




**Dice game**

> A dice game is a game that uses or incorporates one or more dice as the sole or central component, usually as a random device.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/List_of_dice_games)




**Distributed computing**

> Distributed Computing is a field of computer science that studies distributed systems. A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Distributed_computing)




**Game engine**

> A game engine is a software framework designed for the creation and development of video games. Developers use them to create games for consoles, mobile devices and personal computers. The core functionality typically provided by a game engine includes a rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, scene graph, and may include video support for cinematics. The process of game development is often economized, in large part, by reusing/adapting the same game engine to create different games, or to make it easier to "port" games to multiple platforms.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Game_engine)




**Internet Relay Chat (IRC)**

> Internet relay chat is an application layer protocol that facilitates communication in the form of text. The chat process works on a client/server networking model. Internet relay chat clients are computer programs that a user can install on their system. These clients communicate with chat servers to transfer messages to other clients. Internet relay chat is mainly designed for group communication in discussion forums, called channels, but also allows one-on-one communication via private messages as well as chat and data transfer, including file sharing.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Internet_Relay_Chat)




**Massively Multiplayer Online game (MMO)**

> A massively multiplayer online game is an online game which is capable of supporting large numbers of players, typically from hundreds to thousands, simultaneously in the same instance (or world). Massively multiplayer online games usually feature a huge, persistent open world, although some games differ. These games can be found for most network-capable platforms, including the personal computer, video game console, or smartphones and other mobile devices.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Massively_multiplayer_online_game)




**Multiplayer video game**

> A multiplayer video game is a video game in which more than one person can play in the same game environment at the same time. Video games are often single-player activities, putting the player against preprogrammed challenges or AI-controlled opponents (which lack the flexibility of human thought). Multiplayer games allow players interaction with other individuals in partnership, competition or rivalry, providing them with social communication absent from single-player games. In multiplayer games, players may compete against one or more human contestants, work cooperatively with a human partner to achieve a common goal, supervise other players' activity, co-op, and objective-based modes assaulting (or defending) a control point. Multiplayer games typically require players to share the resources of a single game system or use networking technology to play together over a greater distance.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Multiplayer_video_game)




**Multi-User-Dungeon (MUD)**

> A multi-user-dungeon is a multiplayer real-time virtual world, usually text-based. Multi-user-dungeons combine elements of role-playing games, hack and slash, player versus player, interactive fiction, and online chat. Players can read or view descriptions of rooms, objects, other players, non-player characters, and actions performed in the virtual world. Players typically interact with each other and the world by typing commands that resemble a natural language.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/MUD)




**Operating System (OS)**

> An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require an operating system to function.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Operating_system)




**Parallel computing**

> Parallel computing is a type of computation in which many calculations or the execution of processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Parallel_computing)




**Role-Playing Game (RPG)**

> A role-playing game is a game in which players assume the roles of characters in a fictional setting. Players take responsibility for acting out these roles within a narrative, either through literal acting or through a process of structured decision-making or character development. Actions taken within many games succeed or fail according to a formal system of rules and guidelines.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Role-playing_game)




**Role-Playing video Game (RPG)**

> A role-playing video game is a video game genre where the player controls the actions of a character (and/or several party members) immersed in some well-defined world. Many role-playing video games have origins in pen-and-paper role-playing games (Including Dungeons & Dragons) and use much of the same terminology, settings and game mechanics. Other major similarities with pen-and-paper games include developed story-telling and narrative elements, player character development, complexity, as well as replayability and immersion. The electronic medium removes the necessity for a gamemaster and increases combat resolution speed. Role-playing video games have evolved from simple text-based console-window games into visually rich 3D experiences.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Role-playing_video_game)




**Software framework**

> A software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software. A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces that bring together all the different components to enable development of a project or system.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Software_framework)




**Subroutine**

> In computer programming, a subroutine is a sequence of program instructions that perform a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed. Subprograms may be defined within programs, or separately in libraries that can be used by multiple programs. In different programming languages, a subroutine may be called a procedure, a function, a routine, a method, or a subprogram. The generic term callable unit is sometimes used.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Subroutine)




**Tabletop game**

> A Tabletop game is a general term used to refer to board games, card games, dice games, miniatures wargames, tile-based games and other games that are normally played on a table or other flat surface. The term is used to distinguish these types of games from sports and video games. The term is also used to distinguish role-playing games from role-playing video games and LARPs, although role-playing games may not necessarily require a wide playing surface.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Tabletop_game)




**Text-based**

> A text-based application is one whose primary input and output are based on text rather than graphics or sound. This does not mean that text-based applications do not have graphics or sound, just that the graphics or sound are secondary to the text.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Text-based_(computing))




**Thread of execution**

> In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of threads and processes differs between operating systems, but in most cases a thread is a component of a process. Multiple threads can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources. In particular, the threads of a process share its executable code and the values of its variables at any given time.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Thread_(computing))




**User Interface (UI)**

> The user interface, in the industrial design field of human–machine interaction, is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine from the human end, whilst the machine simultaneously feeds back information that aids the operators' decision-making process. Examples of this broad concept of user interfaces include the interactive aspects of computer operating systems, hand tools, heavy machinery operator controls, and process controls. The design considerations applicable when creating user interfaces are related to or involve such disciplines as ergonomics and psychology.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/User_interface)




**Video game**

> A video game is an electronic game that involves human interaction with a user interface to generate visual feedback on a video device such as a TV screen or computer monitor. The word video in video game traditionally referred to a raster display device, but as of the 2000s, it implies any type of display device that can produce two- or three-dimensional images. 

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Video_game)




**Video game development**

> Video game development is the process of creating a video game. Development is undertaken by a game developer, which may range from one person to a large business.

*source:* [Wikipedia](https://en.wikipedia.org/wiki/Video_game_development)




## ABOUT ##

### Vision Statement ###

It will be easier for video game developers to develop massively multiplayer online video games.

If they can make use of a software framework which provides text-based building blocks.

That can be integrated with other systems.

That can be distributed over multiple hardware devices.

That can be used to define and compute, the logic and rules, of tabletop games, in a virtual world with a large number of players.